11-4 qll

另一個必須保護的內容,就是網頁中的 email 帳號。大部分廣告信的電郵來源,都是經由簡單的電郵搜尋程式(稱為 Spam Bots 或是 Email Harvesters ),直接搜尋開放網頁中的 mailto 或是 @ 字串,再抽取出 email 帳號。因此,若要在網頁上顯示你的 email,又不想被廣告信塞爆信箱,最簡單的方式,就是對 email 帳號進行簡單的加密。

Hint
你可以從每天收到的廣告信,就可以知道 email 帳號保護是一件非常重要的事!

一般而言,留在網頁上的電郵帳號,很容易被 Robot 程式給抽取出來(當然是用通用式來進行),最後被收集到 Email 光碟大補帖販賣銷售。若要對 email 進行基本的保護,最基本的原則,就是不要在網頁內文出現電郵帳號,例如,可以使用 image 來代替,這個方法的壞處是:

當然,還有一種很簡單的方法,就是改造一下 email,並說明如何還原,例如, 這個方法很簡單,但是使用者在點選後,還必須修改一下,才能開始送信。

另一個比較方便的方法,就是使用 JavaScript 來「合成」一個 email 帳號,例如:

Example(emailHide01.htm):

相關原始碼如下:

原始檔(emailHide01.htm):(灰色區域按兩下即可拷貝)
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5">
</head>

<body>
<h2 align=center>使用 JavaScript 來隱藏電子郵件:簡單版</h2>
<hr>

<script>
function showEmail(user, site){
	document.write('<a href=\"mailto:' + user + '@' + site + '\">');
	document.write(user + '@' + site + '</a>');
}
</script>
張老師的 Email 是 <script>showEmail("jang", "cs.nthu.edu.tw");</script>
<hr>
</body>
</html>

在這個範例中,我們使用 JavaScript 來合成一個電郵帳號,因為一般的 Robot,並無法看懂 JavaScript,因此就無法直接抽取這個電郵帳號。

當然,我們可以產生更複雜的範例,例如:

Example(emailHide02.htm):

相關原始碼如下:

原始檔(emailHide02.htm):(灰色區域按兩下即可拷貝)
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5">
</head>

<body>
<h2 align=center>使用 JavaScript 來隱藏電子郵件:使用 shiftEncode()、xorEncode 及 escape() </h2>
<hr>
<script src="encode.js"></script>
<p>
使用 shiftEncode() 和 escape():張老師的 Email 是 
<script>document.write(shiftEncode("=b!isfg>nbjmup;kbohAdt/ouiv/fev/ux?kbohAdt/ouiv/fev/ux=0b?", -1));</script>
<p>
使用 xorEncode() 和 escape():張老師的 Email 是 
<script>document.write(xorEncode(unescape("%5D%03C%09%10%06%07_%0E%00%0B%0F%15%0DY%0B%03%0D%06%22%00%12L%0D%15%0A%16O%07%07%14L%17%16%5C%09%00%0C%04%21%01%10O%0C%17%09%17M%04%06%16O%16%14%5DM%02_"), "abc"));</script>
<hr>
</body>
</html>

在上述範例中,我們分別使用 escape()、shiftEncode() 以及 xorEncode() 來對電郵帳號進行保護,有關這些函數的描述,請見上一節的說明。

Hint
本章的所有範例,均假設 Robots 並無法解譯 JavaScript,一般情況也是如此,因為解譯 JavaScript 需要花時間,會降低抓取電郵帳號的速度。但是如果碰到功力高深、可以解譯 JavaScript 的 Robots,那麼這些技巧就全部破功了!


JavaScript 程式設計與應用:用於網頁用戶端